﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://ac.nowcoder.com/acm/problem/219035
/*
题目描述：
链接：https://ac.nowcoder.com/acm/problem/219035
来源：牛客网

 盼望着，盼望着，东风来了，春天脚步近了。

值此大好春光，老师组织了同学们出去划船，划船项目收费如下：

双人船最多坐两人，也可以坐一人，收费
𝑎
a元

三人船最多坐三人，也可以坐两人或者一人，收费
𝑏
b元

本次出游加上带队老师共
𝑛
n人，如何安排能使得花费最小呢？

输入描述:
第一行给出一个正整数
𝑇
(
1
≤
𝑇
≤
1000
)
T(1≤T≤1000)，代表测试数据的组数。

接下来
𝑇
T 行每行给出三个正整数
𝑛
,
𝑎
,
𝑏
,
1
≤
𝑛
,
𝑎
,
𝑏
≤
1
0
9
n,a,b,1≤n,a,b≤10
9
 ，含义如题。
输出描述:
每组输入输出一行，代表最小的花费


示例1
输入
复制
2
2 20 200
3 20 20
输出
复制
20
20
*/

// 开始解题：
// 方法——贪心
#include <iostream>
#include <cstring>
using namespace std;

int main() {
    long long n = 0, a = 0, b = 0, t = 0;
    cin >> t;
    while (t--) {
        cin >> n >> a >> b;
        if (n <= 2) { // 边界情况
            printf("%lld\n", min(a, b));
            continue;
        }
        long long ret = 0;
        if (3 * a < 2 * b) {
            // 尽可能选择双人船
            ret += n / 2 * a;
            n %= 2;
            if (n) {
                // 最后只剩一个人
                ret += min(a, min(b, b - a)); // 从
            }
        }
        else {
            // 尽可能选择三人船
            ret += n / 3 * b;
            n %= 3;
            if (n) {
                if (n == 1) {
                    ret += min(a, min(b, 2 * a - b));
                }
                else if (n == 2) {
                    ret += min(a, min(b, 3 * a - b));
                }
            }
        }
        printf("%lld\n", ret);

    }

    return 0;
}